最近工作遇到一个需求,需要下载excel模板,编辑后上传解析存储到数据库。因此为了更好的理解公司框架,我就自己先用spring mvc实现了一个样例。
最近工作遇到一个需求,需要下载excel模板,编辑后上传解析存储到数据库。因此为了更好的理解公司框架,我就自己先用spring mvc实现了一个样例。
基础框架
之前曾经介绍过一个最简单的spring mvc的项目如何搭建,传送门在这里。
这次就基于这个工程,继续实现上传下载的小例子。需要做下面的事情:
- 1 增加index.html,添加form提交文件
- 2 引入commons-fileupload、commons-io、jxl等工具包
- 3 创建upload download接口
- 4 注入multipartResolver bean
- 5 在upload中使用HttpServletRequest获取文件流,通过WorkBook进行解析
- 6 在download中通过HttpServerResponse返回文件流,实现下载
页面
页面很简单,其实就是一个form标签,需要注意的是:
- form中enctype=”multipart/form-data”
- action指定访问的url
- input中需要设置name属性,这样后端才能获取到文件对象
1 | <form role="form" action="/upload" method="POST" enctype="multipart/form-data"> |
引入commons-fileupload、jxl等工具包
涉及的jar包有:
- commons-fileupload 用于获取上传文件
- jxl 用于解析excel
1 | <!-- springframework begins --> |
Xml的配置
在web.xml中需要配置默认的访问页面,因为之前已经设置过拦截的请求是/
,因此如果不设置所有的静态页面都会被拦截下来。1
2
3<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
在spring的配置文件中,加入CommonsMultipartResolver
的bean。1
2
3
4
5
6
7
8
9<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- set the max upload size100MB -->
<property name="maxUploadSize">
<value>104857600</value>
</property>
<property name="maxInMemorySize">
<value>4096</value>
</property>
</bean>
上传代码
1 | "upload") ( |
下载代码
1 | "download") ( |
模板类
1 | static class ExcelUtils { |
最后贡献下相关的代码
有需要的可以拿去参考